package com.ruoyi.system.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.system.domain.EquipmentManagement;
import com.ruoyi.system.domain.RealtimePositioning;
import com.ruoyi.system.domain.vo.bigscreen.DeviceDriver;
import com.ruoyi.system.domain.vo.equipment.EquipmentInfo;
import com.ruoyi.system.domain.vo.equipment.NumberPlateDeviceId;
import com.ruoyi.system.domain.vo.common.ComDvoName;
import org.apache.ibatis.annotations.Param;

/**
 * 设备管理Mapper接口
 *
 * @author wp
 * @date 2023-08-10
 */
public interface EquipmentManagementMapper extends BaseMapper<EquipmentManagement> {

    @DataScope
    public List<EquipmentInfo> list(EquipmentInfo param);

    public List<EquipmentInfo> listBaseInfo(EquipmentInfo param);

    public EquipmentInfo get(Long id);

    /**
     * 根据设备号获取车辆定位信息
     *
     * @param deviceId
     * @return
     */
    RealtimePositioning getVehiclePositionByDeviceId(String deviceId);

    /**
     * 根据设备号获取车牌号和设备号
     */
    @DataScope
    List<NumberPlateDeviceId> listNumberPlateByDeviceId(JSONObject param);

    /**
     * 批量更新激活信息
     *
     * @return
     */
    int batchUpdateActivate(@Param("activateStatus") Integer activateStatus, @Param("activateTime") Date activateTime,
                            @Param("activateUserId") Long activateUserId, @Param("equipmentIds") List<Long> equipmentIds);

    /**
     * 批量修改监管对象所属公司
     */
    int batchUpdateVehicleCompany(@Param("ids") List<Long> ids, @Param("companyId") Long companyId);

    /**
     * 批量修改负责人所属公司
     */
    int batchUpdateDriverCompany(@Param("ids") List<Long> ids, @Param("companyId") Long companyId);

    /**
     * 批量修改设备所属公司
     */
    int batchUpdateEquipmentCompany(@Param("ids") List<Long> ids, @Param("companyId") Long companyId);

    /**
     * 查询设备名称和公司名称
     */
    List<ComDvoName> listDeviceAndCompanyName(@Param("deviceIds") List<String> deviceIds);

    /**
     * 查询设备名称和公司名称
     */
    ComDvoName getDeviceAndCompanyName(@Param("deviceId") String deviceId);

    /**
     * 查询负责人信息
     *
     * @param companyIds
     * @return
     */
    public List<DeviceDriver> listDriver(@Param("companyIds") List<Long> companyIds);

    /**
     * 查询设备名称和设备号
     */
    public List<Map<String, Object>> listNumberPlateDeviceIdByName(JSONObject param);

    /**
     * 查询监管类型列表
     *
     * @return
     */
    public List<Integer> listObjType(JSONObject map);

}
